home *** CD-ROM | disk | FTP | other *** search
Wrap
package Local.Game.Thing { import Local.Game.World.*; import Local.Game.World.Map.*; import Local.Game.World.Map.Cell.*; import Local.Math.*; import STC9.System.*; import flash.display.*; import flash.events.*; import flash.geom.*; public class CAircraftApache extends CAircraft { private var mAltitude:Number; private var mMinAltitude:Number; private var mHellFire:CWeaponHellFire; private var mRearRotor:CThingAnimation; private var mMaxAltitude:Number; private var mMainGun:CWeaponGunApache; private var mTrackSoundID:String; private var mMainRotor:CThingAnimation; private var _Command:String = "proceed"; public function CAircraftApache(param1:CPosition) { _Command = "proceed"; super(param1); mType = "apache"; Process = Process_Normal; mMaxLife = mLife = 200; §§push(§§findproperty(mMaxSpeed)); §§push(9 + Math.random() * 2); if(true) { §§push(§§pop() * mSpriteScalar); } §§pop().mMaxSpeed = §§pop(); mSpeed = 0; mAcceleration = 0.6; mOrientation = 1; mDelta = new CPosition(0,0); AddThing(mHellFire = new CWeaponHellFire()); AddThing(mMainRotor = new CThingAnimation(Apache_MainRotor)); AddThing(mRearRotor = new CThingAnimation(Apache_RearRotor)); mWeaponDelta = new CPosition(); mMaxAltitude = mAltitude = 140; mMinAltitude = 80; AddAnimation("stand",Apache,"AddSprite_Scale"); SetCollisionBySprite(mAnimation[0]); AddLoopingSound("flight",Apache_Move); mTrackSoundID = PlaySound("flight"); IncrementBuild(); SetTargetting(1150 - Math.random() * 300,true,FILTER_AnyTarget,true,100); SetState("GOTO"); } public static function get mCost() : int { return 25000; } public function get mIconIndex() : int { return 3; } override public function Dispose() : void { if(true) { if(mDisposed) { if(true) { return; } } else { super.Dispose(); } StopSound(mTrackSoundID); } } public function State_MOUSEOVER_Enter() : void { } public function get mCommandDrop() : Boolean { return false; } public function get mCommand() : String { return _Command; } public function set mCommand(param1:String) : void { _Command = param1; if(_Command == "proceed") { mSpeed = 0; } } private function _targetThing() : CThingMain { if(true) { if((mCurrentTarget = GetTarget()) != null) { if(true) { §§push(!mCurrentTarget.mTargetAirbourne); §§push(!mCurrentTarget.mTargetAirbourne); if(true) { if(§§pop()) { §§pop(); if(true) { addr45: if(!(GetTargetRange(mCurrentTarget) < 650 || mCurrentTarget.mTargetAirbourne)) { mCurrentTarget = null; } §§goto(addr66); } SetState("TARGETAIR"); §§goto(addr55); } } §§goto(addr45); } addr55: §§goto(addr66); } } addr66: return mCurrentTarget; } public function State_GOTO_Exit() : void { } public function GetShotDelta(param1:String) : CPosition { return mWeaponDelta.Clone(); } public function State_TARGETGROUND_Exit() : void { if(true) { §§push(mMainGun); if(true) { §§pop().mFire = false; §§push(mMainGun); } §§pop().mCurrentTarget = null; } } public function State_MOUSEOVER_Exit() : void { } public function State_GOTO() : void { var _loc1_:* = NaN; if(true) { _targetThing(); if(true) { if(_Command == "proceed") { if(true) { mAngle.mAngle256 = mDelta.length / mMaxSpeed * 2; if(true) { Accelerate_Gradient(mDelta,mGradient); if(true) { mPosition.Add(mDelta); if(true) { §§push(mAltitude); if(true) { §§push(§§pop() / 2); } _loc1_ = §§pop(); } mPosition.y = (GetAltitude(mPosition.x - _loc1_) + GetAltitude(mPosition.x + _loc1_)) / 2 - mAltitude; } if(MapMove()) { } mCollide.Update(); addr90: if(mDisposed) { §§goto(addr92); } else { return; } addr81: } Process_ReachedObjective(); } §§goto(addr81); } } §§goto(addr90); } addr92: } public function State_WAIT() : void { if(true) { if(_targetThing() != null) { if(true) { return; } addr28: SetState("GOTO"); } else if(mStateCount < 0) { §§goto(addr28); } } } public function State_MOUSEOVER() : void { if(true) { §§push(mStateCount < 0); if(true) { if(§§pop()) { §§pop(); if(true) { addr30: if(mMouseOver) { } §§goto(addr34); } SetState(mReturnStateID); addr34: return; } } } §§goto(addr30); } public function State_TARGETGROUND_Enter() : void { } public function get mLongName() : String { return "APACHE ATTACK HELICOPTER"; } public function get mCommandProceed() : Boolean { return true; } public function State_TARGETAIR_Enter() : void { } public function get mShortDesc() : String { return "The Apache Helicopter equipped with hellfire radar guided missiles and a 30mm chain gun under the nose. Ok against ground units and great against air units!"; } public function State_TARGETAIR_Exit() : void { mHellFire.mFire = false; mHellFire.mCurrentTarget = null; } public function State_TARGETGROUND() : void { if(!ValidTarget(mCurrentTarget)) { SetState("GOTO"); return; } §§push(mMainGun); if(true) { §§pop().mCurrentTarget = mCurrentTarget; §§push(mMainGun); } §§pop().mFire = true; } public function State_GOTO_Enter() : void { if(true) { mSpeed = 0; } } override public function Draw() : void { var _loc1_:Matrix = null; var _loc2_:Point = null; super.Draw(); _loc1_ = GetOrientationMatrix(); if(true) { DrawSprite(_loc1_); } _loc2_ = _loc1_.transformPoint(mSprite.mObjects["mainrotor"].mPosition); §§push(mMainRotor); if(true) { §§pop().mPosition.SetXY(_loc2_.x + mPosition.x,_loc2_.y + mPosition.y); §§push(mMainRotor); } §§pop().Draw(); _loc2_ = _loc1_.transformPoint(mSprite.mObjects["rearrotor"].mPosition); if(true) { mRearRotor.mPosition.SetXY(_loc2_.x + mPosition.x,_loc2_.y + mPosition.y); mRearRotor.Draw(); } } public function State_WAIT_Exit() : void { } public function Process_Normal() : void { if(Process_State != null) { Process_State(); } if(mDisposed) { return; } mHellFire.mPosition.Copy(GetObjectPosition("hellfire",mPosition)); Process_Children(); if(mDead) { DispatchDispose(); } } public function get mCommandHalt() : Boolean { return true; } override public function get mSmallPrize() : int { return mCost; } override public function get mPrize() : int { return mCost * 2; } public function State_TARGETAIR() : void { if(!ValidTarget(mCurrentTarget)) { mStateCount = SECONDS; SetState("WAIT"); return; } §§push(mHellFire); if(true) { §§pop().mCurrentTarget = mCurrentTarget; §§push(mHellFire); } §§pop().mFire = true; } public function get mCommandTakeControl() : Boolean { return false; } public function State_WAIT_Enter() : void { if(true) { mSpeed = 0; } } } }